home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / COMMODOR / 64BUDGET.ARC / BUDGET PLANNER (.txt) next >
Commodore BASIC  |  2000-06-30  |  6KB  |  221 lines

  1. 1 REM BUDGET PLANNER, C.B.SILBERGLEITH COMPUTE'S GAZ. 12/83
  2. 2 :
  3. 3 REM MODIFIED BY M.J.KOZAKIEWICZ (6/84) TO INCLUDE THE FOLLOWING ITEMS:
  4. 4 REM  * DISK ERROR CHECKING
  5. 5 REM  * WEEK DUE FIELD, AND SORTING BY WEEK DUE
  6. 6 REM  * SCREEN DUMP TO PRINTER WHEN '\' PRESSED (ROUTINE @ 49152)
  7. 7 REM  * DISK DIRECTORY OPTION AVAILABLE FROM 'LOAD/MERGE' AND 'SAVE' OPTIONS
  8. 8 REM  ** NOTE: SCRN DUMP AND DISK DIRECTORY OPTIONS ARE LOCATED IN ML ROUTINES
  9. 9 REM  ** LOADED BY 'HOUSE BUDGET' PROGRAM WHICH ALSO LOADS AND RUNS THIS PROG.
  10. 10 REM DEFINE VARIABLES
  11. 20 SZ=100:I=-19:POKE53281,12:POKE53280,0:PRINT"[144]":POKE53272,23
  12. 30 R$=CHR$(13):TA=0
  13. 40 DIMA$(SZ),AE(SZ),AW(SZ)
  14. 50 DEFFNRN(X)=INT(X*100+.5)/100
  15. 200 REM MAIN ROUTINE
  16. 210 GOSUB 6000
  17. 220 Z$="":GETZ$:IFZ$=""THENGOTO220
  18. 230 IFZ$=CHR$(133) THENI=I+20:GOSUB1000
  19. 235 IFZ$=CHR$(134) THENGOSUB3000
  20. 240 IFZ$=CHR$(135) THENGOSUB5000
  21. 245 IFZ$=CHR$(136) THENGOSUB7000
  22. 250 IFZ$=CHR$(137) THENGOSUB2000
  23. 255 IFZ$=CHR$(138) THENGOSUB4000:GOTO210
  24. 260 IFZ$=CHR$(139) THENGOSUB6000
  25. 265 IFZ$=CHR$(140) THENGOSUB8000
  26. 270 IFZ$=CHR$(17) THENI=I-1:GOSUB1000
  27. 275 IFZ$=CHR$(145)THENI=I+1:GOSUB1000
  28. 299 GOTO220
  29. 300 REM ACCUM TOTALS
  30. 310 TA=0
  31. 320 FOR J=1TOMX
  32. 330 TA=TA+AE(J)
  33. 340 NEXTJ
  34. 350 RETURN
  35. 400 REM LOAD FILES
  36. 410 INPUT"FILE NAME";F$
  37. 420 IFF$="*END"THENGOSUB6000:RETURN
  38. 450 CLOSE1:CLOSE15:OPEN15,8,15:OPEN1,8,0,F$
  39. 452 GOSUB9000:IFE1$<>"00"THEN GOSUB9500:GOTO495
  40. 455 PRINT"         FOUND[146][144] ";F$
  41. 460 INPUT#1,MX
  42. 465 GOSUB9000:IFE1$<>"00"THEN GOSUB9500:GOTO 495
  43. 470 FORJ=1TOMX
  44. 480 INPUT#1,Y,A$(J),AE(J),AW(J)
  45. 485 GOSUB9000:IFE1$<>"00"THEN GOSUB9500:GOTO 495
  46. 490 NEXTJ
  47. 495 CLOSE1:CLOSE15
  48. 499 RETURN
  49. 500 REM SORT BY WEEK
  50. 505 IFMX=1THENGOTO599
  51. 510 PRINT"          SORTING[146]"
  52. 520 FORJ=1TOMX-1
  53. 530 FORK=J+1TOMX
  54. 540 IFAW(K)>AW(J)THENGOTO590
  55. 550 SM$=A$(K):SM=AE(K):SW=AW(K)
  56. 560 A$(K)=A$(J):AE(K)=AE(J):AW(K)=AW(J)
  57. 570 A$(J)=SM$:AE(J)=SM:AW(J)=SW
  58. 590 NEXTK
  59. 595 NEXTJ
  60. 599 RETURN
  61. 1000 REM DISPLAY
  62. 1010 IF(I<1)OR(I>MX)THENI=1
  63. 1020 PRINT"[147] #[146]"TAB(5)"EXPENSES[146]"TAB(16)"AMT[146]"TAB(29)"WK DUE[144][146]"
  64. 1030 FORJ=ITOI+19
  65. 1040 IFJ>MXTHENPRINT"[160]":GOTO1080
  66. 1050 PR$=STR$(AE(J)+.001):PR$=MID$(PR$,2,(LEN(PR$)-2))
  67. 1060 IFAE(J)=0THENPR$="0.00"
  68. 1065 J$=MID$(STR$(J),2)
  69. 1070 PRINTTAB(3-LEN(J$))J$;TAB(4)A$(J)TAB(21-LEN(PR$))PR$;TAB(30)AW(J)
  70. 1080 NEXTJ
  71. 1090 TA$=STR$(TA+.001)
  72. 1100 TA$=LEFT$(TA$,LEN(TA$)-1)
  73. 1110 IFTA=0THENTA$="0.00"
  74. 1120 PRINT"TOTAL[144][146] "TA$,"F6[146][144]-OPTIONS SCREEN"
  75. 1999 RETURN
  76. 2000 REM ADD NEW
  77. 2010 R=MX+1:N$="":E1$=""
  78. 2020 PRINT"[147]ADD NEW EXPENSES"
  79. 2030 PRINT"ITEM #";R
  80. 2040 INPUT"ITEM NAME   *END[157][157][157][157][157][157]";N$
  81. 2050 IFN$="*END"THENGOTO2999
  82. 2055 IFLEN(N$)>10THEN N$=LEFT$(N$,10)
  83. 2060 A$(R)=N$
  84. 2070 INPUT"ITEM AMT  ";E1$
  85. 2080 IFE1$="*END"THENGOTO2999
  86. 2085 IFVAL(E1$)=0THENAE(R)=0:GOTO2100
  87. 2090 AE(R)=FNRN(VAL(E1$))
  88. 2095 IFAE(R)>9999.99THENAE(R)=9999.99
  89. 2096 INPUT"WEEK DUE   *END[157][157][157][157][157][157]";W$
  90. 2097 IFW$="*END"THENGOTO2999
  91. 2098 IFVAL(W$)>5ORVAL(W$)<0 THEN 2096
  92. 2099 AW(R)=VAL(W$)
  93. 2100 MX=MX+1
  94. 2110 GOTO2010
  95. 2200 MX=MX+1
  96. 2999 GOSUB500:GOSUB300:GOSUB6000:RETURN
  97. 3000 REM UPDATE
  98. 3010 PRINT"[147]";TAB(10)"EXPENSE";" ";"UPDATE[146][144]"
  99. 3020 INPUT"ITEM #   *END[157][157][157][157][157][157]";P1$
  100. 3025 IFP1$="*END"THENGOTO3999
  101. 3026 IF(VAL(P1$)=0)OR(VAL(P1$)<1)THENPRINT"INPUT ERROR[146][144]":GOTO3020
  102. 3027 P=INT(VAL(P1$))
  103. 3030 N$="":E1$=""
  104. 3040 IFP>SZTHENPRINT"MAX EXCEEDED":P=SZ:MX=P
  105. 3050 IFP>MXTHENMX=P
  106. 3060 PR$=STR$(AE(P)+.001):PR$=MID$(PR$,2,(LEN(PR$)-2))
  107. 3065 IFAE(P)=0THENPR$="0.00"
  108. 3070 PRINTP;TAB(4)A$(P)TAB(21-LEN(PR$))PR$TAB(30)AW(P)
  109. 3080 INPUT"ITEM NAME";N$
  110. 3090 IFN$="*END"THENGOTO3999
  111. 3100 IFN$<>""THENA$(P)=N$
  112. 3105 IFLEN(A$(P))>10THENA$(P)=LEFT$(A$(P),10)
  113. 3110 INPUT"AMT ";E1$
  114. 3120 IFE1$="*END"THENGOTO3999
  115. 3125 IFE1$=""GOTO3160
  116. 3130 IF(VAL(E1$)=0)AND(E1$<>"0")THENPRINT"[156]INPUT ERROR[146][144]":GOTO3110
  117. 3135 IFVAL(E1$)=0THENAE(P)=0:GOTO3800
  118. 3140 AE(P)=FNRN(VAL(E1$))
  119. 3150 IFAE(P)>9999.99THENAE(P)=9999.99
  120. 3160 INPUT"WEEK ";E1$
  121. 3165 IFE1$="*END"THENGOTO3999
  122. 3170 IFE1$=""GOTO3010
  123. 3175 AW(P)=VAL(E1$)
  124. 3800 GOTO3010
  125. 3999 GOSUB500:GOSUB300:GOSUB6000:RETURN
  126. 4000 REM SAVE FILE
  127. 4010 PRINT"[147]           SAVE EXPENSE LIST"
  128. 4020 INPUT"FILE NAME OR $ (DISK DIR)";F$
  129. 4030 IFF$="*END"THENGOTO4999
  130. 4035 IFF$="$"THENGOSUB9600:SYS49329:GOTO4020
  131. 4050 CLOSE1:CLOSE15:OPEN15,8,15:OPEN1,8,1,F$
  132. 4055 GOSUB9000:IFE1$<>"00"THENGOSUB9500:GOTO4999
  133. 4060 PRINT#1,MX:GOSUB9000:IF E1$<>"00"THEN GOSUB9500:GOTO4999
  134. 4070 FORJ=1TOMX
  135. 4080 PRINT#1,J;R$;A$(J)R$;AE(J);R$;AW(J);R$
  136. 4085 GOSUB9000:IFE1$<>"00"THENGOSUB9500:GOTO4999
  137. 4090 NEXTJ
  138. 4100 CLOSE1:CLOSE15
  139. 4999 RETURN
  140. 5000 REM DELETE
  141. 5005 DT=0:TM=0
  142. 5010 PRINT"[147]                DELETE"
  143. 5020 S1$=""
  144. 5030 INPUT"START AT   *END[157][157][157][157][157][157]";S1$
  145. 5040 IFS1$="*END"THENGOTO5900
  146. 5050 DS=INT(VAL(S1$))
  147. 5060 S1$=""
  148. 5070 IFDS=0THENPRINT"INPUT ERROR[146][144]":GOTO5020
  149. 5080 S1$=""
  150. 5090 INPUT"END AT";S1$
  151. 5100 IFS1$="*END"THENGOTO5900
  152. 5110 IFS1$=""ORS1$="0"THENDE=0:GOTO5200
  153. 5120 DE=INT(VAL(S1$))
  154. 5125 IFDE>MXTHENDE=MX
  155. 5130 IFDE=>DSTHENGOTO5200
  156. 5135 PRINT"0 OR NUMBER GREATER"
  157. 5140 PRINT"THAN[146][144]";DE;"REQUIRED[144]"
  158. 5150 GOTO5080
  159. 5200 IFDE=0THENDE=DS
  160. 5205 TM=DE-DS+1
  161. 5207 DT=DT+TM
  162. 5210 FORJ=DSTODE
  163. 5220 A$(J)="[160][160][160][160][160][160][160][160][160]":AE(J)=0:AW(J)=9
  164. 5230 NEXTJ
  165. 5240 GOTO5010
  166. 5900 GOSUB500
  167. 5910 MX=MX-DT
  168. 5999 GOSUB300:GOSUB6000:RETURN
  169. 6000 REM OPTIONS MENU
  170. 6010 PRINT"[147][144]OPTIONS:"
  171. 6020 PRINTTAB(8)"========"
  172. 6030 PRINTTAB(8)"F1[146][144]-DISPLAY EXPENSES"
  173. 6040 PRINTTAB(8)"F2[146][144]-ADD NEW EXPENSES"
  174. 6050 PRINTTAB(8)"F3[146][144]-UPDATE EXPENSE LIST"
  175. 6060 PRINTTAB(8)"F4[146][144]-SAVE EXPENSE LIST"
  176. 6070 PRINTTAB(8)"F5[146][144]-DELETE FROM LIST"
  177. 6080 PRINTTAB(8)"F6[146][144]-OPTIONS SCREEN"
  178. 6090 PRINTTAB(8)"F7[146][144]-LOAD/MERGE FILES"
  179. 6100 PRINTTAB(8)"F8[146][144]-END"
  180. 6105 PRINTTAB(9)"\[146][144]-SCREEN DUMP TO PRINTER"
  181. 6110 PRINTTAB(8)"NOTE[146][144]-ENTER '*END' TO EXIT ANY"
  182. 6120 PRINTTAB(13)"FUNCTION"
  183. 6999 RETURN
  184. 7000 REM LOAD/MERGE
  185. 7010 PRINT"[147]             LOAD/MERGE[146]"
  186. 7020 PRINT"            [144]EXPENSE FILES"
  187. 7030 INPUT"LOAD, MERGE, OR DISK DIR (L/M/$)   L[157][157][157]";AN$
  188. 7035 IFAN$="$"THENGOSUB9600:SYS49329:GOTO7030
  189. 7040 IF AN$="L"THENMX=0:GOSUB400:GOTO7999
  190. 7050 IF AN$="*END"THENGOSUB6000:RETURN
  191. 7060 IF AN$<>"M"THENGOTO7030
  192. 7070 PRINT"MERGE"
  193. 7080 INPUT"FILE NAME";F$
  194. 7090 IFF$="*END"THENGOSUB6000:RETURN
  195. 7120 CLOSE1:CLOSE15:OPEN15,8,15:OPEN1,8,0,F$
  196. 7130 INPUT#1,T1:GOSUB9000:IFE1$<>"00"THEN GOTO 9500
  197. 7140 FORT2=1TOT1
  198. 7150 INPUT#1,Y,T3$,T4,TW:GOSUB9000:IF E1$<>"00" THEN GOTO 9500
  199. 7160 FORJ=1TOMX
  200. 7170 IFA$(J)=T3$THENAE(J)=INT(((AE(J)+T4)/2)*100)/100:T3$=""
  201. 7180 NEXTJ
  202. 7190 IFT3$<>""THENMX=MX+1:A$(MX)=T3$:AE(MX)=T4:AW(MX)=TW
  203. 7200 NEXT
  204. 7210 CLOSE 1:CLOSE 15
  205. 7999 GOSUB500:GOSUB300:GOSUB6000:RETURN
  206. 8000 REM END OF JOB
  207. 8010 PRINT"[147]          END OF PROGRAM[144][146]"
  208. 8020 PRINT"WOULD YOU LIKE TO SAVE (Y/N)   ";:INPUT"Y[157][157][157]";AN$
  209. 8030 IF AN$="*END"THENGOSUB6000:RETURN
  210. 8040 IF AN$="N"THEN GOTO8060
  211. 8050 GOSUB4000
  212. 8060 PRINT"[147]         THAT'S ALL, FOLKS!"
  213. 8070 PRINT"                END"
  214. 8080 END
  215. 9000 INPUT#15,E1$,E2$,E3$,E4$:IFE1$="00"THEN RETURN
  216. 9010 PRINT"           ** ERROR **":PRINT"   DISK ERROR ";E1$;": ";E2$;".":RETURN
  217. 9500 PRINT"           PRESS RETURN[144][146]":CLOSE1:CLOSE15
  218. 9510 GETZX$: IFZX$=""THEN9510
  219. 9520 RETURN
  220. 9600 PRINT"       INSERT DISK IN DRIVE[146][144]":GOSUB9500:RETURN
  221.